import os
import requests
import json
import re

from Unit.cot import get_completion

def check_code(code):
    prompt_content = (
        "请检查以下代码是否有语法错误或逻辑错误，并进行更改给出可以直接运行的代码。\n"
        "请注意，只给出代码，不要解释。\n\n"
        "生成的代码请用以下格式包裹：```csharp\n ... \n```。保证能让 pattern = r'```csharp\s*(?:\[Fact\])?\s*(.*?)\s*```'识别"
        f"{code}\n\n"
        "1. 不要包含NUnit.Framework这个类库，会报错"
        "2. 生成的代码是要直接运行的，不需要加[SetUp]、[TearDown]、[Fact]这种"

  )
    get_num = True
    i = 0
    while get_num and i < 3:
        model_output = get_completion(prompt_content)
        print("\n\n\n model_output\n"+ model_output+"\n")
        # pattern = r'```csharp\n(.*?)\n```'

        # 使用 re.findall 提取所有匹配的内容，并指定 re.DOTALL 以匹配多行

        pattern = r'```csharp\s*(?:\[Fact\])?\s*(.*?)\s*```'


        # 使用 re.findall 提取所有匹配的内容，并指定 re.DOTALL 以匹配多行
        csharp_code_blocks = re.findall(pattern, model_output, re.DOTALL)
        with open("output_checked.txt", "w", encoding="utf-8") as file:
            file.write(csharp_code_blocks[0])
        if csharp_code_blocks != []:
            get_num = False

        i += 1
        prompt_content = (
            "生成的代码请用以下格式包裹：```csharp\n ... \n```。,保证能让 pattern = r'```csharp\s*(?:\[Fact\])?\s*(.*?)\s*```'识别"
        )
    return csharp_code_blocks[0]